var special = /[!@#\$%\^\&*\)\(+=._-]/

function clavedos(pw)
{ 
    //id_Clave
    return $('#'+pw).val().length >= 8;
} 

function clavetres(pw)
{ 
    //id_Clave
    var clave = $('#'+pw).val();
    if(clave.length >= 8)
    {
        var cl = clave.toLowerCase(); 
        return ((cl.search("a")==-1)&&(cl.search("e")==-1)&&(cl.search("i")==-1)&&(cl.search("o")==-1)&&(cl.search("u")==-1));
    } 
    return false;
} 

function clavecuatro(pw)
{ 
    //id_Clave
    var clave = $('#'+pw).val();
    console.log();
    
    if(clave.length >= 8)
    {
        if(special.test(clave))
        {
            var cl = clave.toLowerCase(); 
            return ((cl.search("a")!=-1)||(cl.search("e")!=-1)||(cl.search("i")!=-1)||(cl.search("o")!=-1)||(cl.search("u")!=-1));
        }
    }
    return false;
} 

function validaClave(pw,pw1,seguridad,caducidad)
{ 
    //id_Clave
    //"seguridadselect"
    //"caducaselect"
    console.log("IN");
    var i = getSelectedText(seguridad);   
    if(i != "" && i != null)
    { 
        var caducidad_ = getSelectedText(caducidad);  
        if(caducidad_ != "" && caducidad_ != null) 
        {
            var clave = $('#'+pw).val();
            var clave_ = $('#'+pw1).val();
            if(clave!= null && clave_!= null && clave!= "" && clave_!= "")
            {
                if(clave == clave_)
                {   
                    if(i == "nivel I")
                        return [clave, getCaducidad(caducidad_)];
                    else 
                    {
                        if(i == "nivel II")
                            if(clavedos(pw))
                                return [clave, getCaducidad(caducidad_)]; 
                            else
                                return 5;
                        else 
                        {
                            if(i == "nivel III")
                                if(clavetres(pw))
                                    return [clave, getCaducidad(caducidad_)]; 
                                else
                                    return 5;
                            else 
                            {
                                if(i == "nivel IV")
                                    if(clavecuatro(pw))
                                        return [clave, getCaducidad(caducidad_)]; 
                                    else
                                        return 5;
                            }
                        }
                    }
                }
                else  
                    return 1;
            }
            else 
                return 2; 
        } 
        else
            return 3;
    } 
    return 4;
}  


function validaClave0(pw,pw1,seguridad)
{ 
    
    console.log("IN");
    var i = getSelectedText(seguridad);   
    if(i != "" && i != null)
    { 
      
        var clave = $('#'+pw).val();
        var clave_ = $('#'+pw1).val();
        if(clave!= null && clave_!= null && clave!= "" && clave_!= "")
        {
            if(clave == clave_)
            {   
                if(i == "nivel I")
                    return clave;
                else 
                {
                    if(i == "nivel II")
                        if(clavedos(pw))
                            return clave;
                        else
                            return 5;
                    else 
                    {
                        if(i == "nivel III")
                            if(clavetres(pw))
                                return clave;
                            else
                                return 5;
                        else 
                        {
                            if(i == "nivel IV")
                                if(clavecuatro(pw))
                                    return clave;
                                else
                                    return 5;
                        }
                    }
                }
            }
            else  
                return 1;
        }
        else 
            return 22; 
    } 
    //alert("retorno 4");
    return 4;
} 

function validaQuota(sel,inp,tam)
{
    //quotaunlimited
    if(!$("#"+sel).prop('checked'))
    {
        //id_Quota
        var size = $("#"+inp).val(); 
        if(size != null && size != "")
        {
            //quotaselect
            var medida = getSelectedText(tam);  
            if(medida != null && medida != "") 
                return size+""+medida;  
            else 
                return "medida";
        }
        else 
            return "size";
    } 
    else return "unlimited";   
}  

//"30 días","60 días","90 días",

function getCaducidad(caducidad)
{
    if(caducidad == "30 días") 
        return "treinta"; 
    else 
        if(caducidad == "60 días") 
            return "sesenta";
        else 
            if(caducidad == "90 días") 
                return "noventa";
            else 
                return "infinito"; 
} 

function validaTablespaces()
{
    var def = getSelectedText("defaultselect"); 
    var temp = getSelectedText("tempselect"); 
    if(def != "" && def != null && temp != "" && temp != null)
        return [def,temp]; 
    else return "null";
} 

function getUsuario()
{ 
    
        //id_Clave
    //"seguridadselect"
    //"caducaselect"
    var user = $("#id_Nombre").val(); 
    if(user != "" && user != null)
    {
        var pw = validaClave("id_Clave","id_Clave1","seguridadselect","caducaselect");  
        var pw_valida = pw_err(pw);
        if(pw_valida)
        {
            var tbspcs = validaTablespaces(); 
            if(tbspcs != "null")
            {
                var quota = validaQuota("quotaunlimited","id_Quota",getSelectedText("quotaselect")); 
                if(quota != "size" && quota != "medida")
                {
                    var query = "CREATE USER "+user+" IDENTIFIED BY "+ pw[0]+" DEFAULT TABLESPACE "+tbspcs[0]+
                            " QUOTA "+quota+" ON "+tbspcs[0]+" TEMPORARY TABLESPACE "+tbspcs[1]+" PROFILE "+pw[1]+";";
                    var roles = getDataTable("tablarol"); 
                    console.log(roles);
                    var privs = getDataTable("tablapriv"); 
                    console.log(privs);
                    var grants = [roles, privs];   
                    console.log(grants);
                    var ajax = [user, query, grants]; 
                    console.log(ajax); 
                    return ajax;
                } 
                else
                    console.log("Tamaño de quota vacío");
            } 
            else
                console.log("Tablespace(s) vacío()s");
        } 
        else 
            console.log("Clave inválida");
    }
    else
        console.log("Nombre de usuario vacío");
    return null;
} 

function pw_err(val)
{ 
    var ret = "";
    var fl = false;
    switch (val)
    {
        case 1: 
            ret = "Claves no coinciden";
            break;
        case 2: 
            ret = "Clave(s) vacía(s)";
            break;
        case 3: 
            ret = "Caducidad de clave en DEFAULT";
            break;
        case 4:
            ret = "Nivel de clave en DEFAULT";
            break;
        case 22: 
            ret = "Clave sin modificar"; 
            fl = true;
            break; 
        case 5: 
            ret = "No cumple con restricciones del nivel";
            break; 
        default:
            ret = "Clave correctactamente asignada"; 
            fl = true;
            break;
    }    
    console.log(ret);
    return  fl;
}